J'ai un ensemble de données comme indiqué ci-dessous nom col1 col2 a 10,3 10,9 b 11 15 c 20 7,2 d 6,2 6,2 e 5,3 5,4 f 4,5 4,0 je veux comparer col1 et col2 de mon df et je veux créer une autre colonne dans laquelle tout en comparant les valeurs col1 et col2 si la valeur de col2 augmente à partir de col1, je veux entrer en augmentant à côté d'eux dans ma colonne là-bas et si elles sont décroissant alors je veux écrire décroissant et aucun changement s'ils sont identiques et je veux ma sortie comme ça nom col1 col2 col3 a 10,3 10,9 croissant b 11 15 croissant c 20 7,2 décroissant d 6.2 6.2 aucun changement e 5,3 5,4 augmentation f 4,5 4,0 décroissant
2021-01-31 08:15:14
Avec dplyr: df%>% muter (Col3 = ifelse (col2 == col1, "pas de changement", ifelse (col2> col1, "croissant", "décroissant"))) Ou en utilisant case_when comme suggéré par @akrun: df%>% mutate (Col3 = case_when (col1 == col2 ~ "pas de changement", col2> col1 ~ "Augmenter", TRUE ~ "décroissant")) Résultat: nom col1 col2 Col3 1 a 10,3 10,9 croissant 2 b 11,0 15,0 croissant 3 c 20,0 7,2 décroissant 4 j 6,2 6,2 pas de changement 5 e 5,3 5,4 en augmentation 6 f 4,5 4,0 décroissant Les données: df <-structure (liste (nom = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3, 11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", row.names = c (NA, -6L)) | Nous pouvons soustraire col1 par col2 puis utiliser le signe pour attribuer des valeurs df $ col3 <- c ("décroissant", "pas de changement", "croissant") [signe (df $ col1 - df $ col2) + 2] df # nom col1 col2 col3 # 1 a 10,3 10,9 décroissant # 2 b 11,0 15,0 décroissant # 3 c 20,0 7,2 augmentant # 4 d 6.2 6.2 aucun changement # 5 e 5.3 5.4 décroissant # 6 f 4,5 4,0 augmentant Ou en utilisant dplyr, nous pouvons utiliser case_when bibliothèque (dplyr) df%>% mutate (col3 = case_when (col1 == col2 ~ "pas de changement", col1> col2 ~ "augmenter", TRUE ~ "décroissant")) | Base R df $ col3 <-with (df, ifelse (col1> col2, "décroissant", ifelse (col1